💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    로딩 중이에요... 🐣

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    04 데이터베이스 설정 및 모델 정의 | ✅ 편저: 코담 운영자

    Django 튜토리얼 #4 - 데이터베이스 설정 및 모델 정의


    🔗 소스


    1. 강의 목표

    • Django 모델을 정의하여 실제 데이터베이스 테이블을 생성하는 전 과정을 실습함
    • 마이그레이션(migration)을 통해 데이터베이스 구조를 자동으로 반영하는 방법 학습

    2. 초기 셋업

    cd lesson3-MigrateSQLite3
    pipenv shell
    pipenv install django
    
    • 새 프로젝트 및 앱 생성
    django-admin startproject worldtour
    cd worldtour
    python manage.py startapp asiatoursagency
    
    • 기존 구조와 동일하게 생성됨 (manage.py, settings.py, 앱 디렉터리 등)

    3. models.py - 모델 클래스 정의

    from django.db import models
    
    # 모델을 이곳에 정의합니다.
    class Tour(models.Model):
        # 출발 국가, 도착 국가, 숙박 일수, 여행 가격 정보를 저장합니다.
        origin_country = models.CharField(max_length=64)       # 출발 국가
        destination_country = models.CharField(max_length=64)  # 도착 국가
        number_of_nights = models.IntegerField()               # 숙박 일수
        price = models.IntegerField()                          # 여행 가격
    
    

    ✅ 필드 설명

    • CharField: 문자열 입력 필드, max_length 필수 지정 (SQL 제약조건)
    • IntegerField: 정수형 필드로 숙박일 수, 가격 등 숫자값 저장에 사용

    ✅ 역할 정리

    • 이 모델은 DB 테이블 tour로 변환됨
    • 각 인스턴스는 데이터베이스의 하나의 row로 작동
    • Django ORM을 통해 Create, Read, Update, Delete 모두 가능

    4. settings.py - 앱 및 데이터베이스 설정 확인

    ✅ 앱 등록

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'asiatoursagency.apps.AsiatoursagencyConfig',
    ]
    
    • AsiatoursagencyConfig는 앱 구성 클래스이며, 앱이 프로젝트에 연결되었음을 의미함

    ✅ 데이터베이스 설정 (SQLite3)

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': BASE_DIR / 'db.sqlite3',
        }
    }
    
    • Django 기본값은 SQLite3. 실무에선 PostgreSQL 또는 MySQL로 변경 가능

    ✅ 언어 및 시간 설정 변경

    LANGUAGE_CODE = 'ko-kr'
    TIME_ZONE = 'Asia/Seoul'
    
    • 국제화 설정을 한국 기준으로 변경 (기본값: 'en-us', 'UTC')

    5. makemigrations 실행

    python manage.py makemigrations
    
    • migrations/0001_initial.py 파일이 자동 생성됨
    • 해당 파일에는 모델에 기반한 테이블 스키마가 담김

    🔍 생성된 마이그레이션 코드 예시

    class Migration(migrations.Migration):
        initial = True
        dependencies = []
        operations = [
            migrations.CreateModel(
                name='Tour',
                fields=[
                    ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                    ('origin_country', models.CharField(max_length=64)),
                    ('destination_country', models.CharField(max_length=64)),
                    ('number_of_nights', models.IntegerField()),
                    ('price', models.IntegerField()),
                ],
            ),
        ]
    
    • id 필드는 자동 생성됨 (AutoField, primary key)

    6. migrate 실행 (DB 반영)

    python manage.py migrate
    
    • 실제 SQLite3 데이터베이스에 테이블 생성됨
    • 테이블: asiatoursagency_tour 생성됨
    • 기타: admin, auth, contenttypes, sessions 관련 테이블도 함께 생성됨

    디렉터리 구조 확인

    lesson4-MigrateSQLite3/
    ├── worldtour/
    │   ├── asiatoursagency/
    │   │   ├── migrations/
    │   │   │   └── __init__.py
    │   │   ├── admin.py
    │   │   ├── apps.py
    │   │   ├── models.py
    │   │   ├── tests.py
    │   │   ├── urls.py
    │   │   └── views.py
    │   ├── worldtour/
    │   │   ├── __init__.py
    │   │   ├── asgi.py
    │   │   ├── settings.py
    │   │   ├── urls.py
    │   │   └── wsgi.py
    │   ├── db.sqlite3
    │   ├── manage.py
    ├── Pipfile
    ├── Pipfile.lock
    

    다음 강의 예고

    • Django shell을 이용한 데이터 추가 및 조회 실습 예정
    TOP
    preload preload